/**
 * Author: wangxiaoying
 * Email: 1009929414@qq.com
 * Description:表单格式校验
 */
export default {
  // Email格式校验
  email (rule, value, callback) {
    var reg = /^[A-z\d_-]+@[A-z\d_-]+\.[A-z\d_-]+$/
    if (!reg.test(value)) {
      return callback(new Error(rule.message || '邮箱格式错误'))
    } else {
      return callback()
    }
  },
  // 手机格式校验
  phone (rule, value, callback) {
    // let reg = /^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$/
    let reg = /^\d{11}$/
    if (!reg.test(value)) {
      return callback(new Error(rule.message || '手机格式错误'))
    } else {
      return callback()
    }
  },

  // 银行卡验证
  bankCard (rule, value, callback) {
    let reg = /^\d*$/;
    let strBin = "10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";
    if (new RegExp(reg).test(value) == false) {
      callback(new Error('请输入数字值'));
    } else if (value.length < 16 || value.length > 19) {
      callback(new Error("银行卡号长度必须在16到19之间"));
    } else if (strBin.indexOf(value.substring(0, 2)) == -1) {
      callback(new Error("银行卡号开头6位不符合规范"));
    } else {
      callback();
    }
  },

  // 六位数值
  sixNumber (rule, value, callback) {
    let reg = /^[0-9]\d*$/;
    if (new RegExp(reg).test(value) == false) {
      callback(new Error('请输入数字值'));
    } else if(value.length !== 6){
      callback(new Error('请输入6位数字'));
    } else{
      callback();
    }
  },

  // 正整数校验
  pInteger (rule, value, callback) {
    var reg = /^[1-9][0-9]*$/
    if (value.length > 0 && !reg.test(value)) {
      return callback(new Error('请输入正整数值'))
    } else {
      return callback()
    }
  },

  // 最大1000
  max1000(rule, value, callback) {
    let reg = /^[1-9][0-9]*$/
    if (value != 0 && !reg.test(value)) {
      return callback(new Error('请输入正整数值'))
    } else if (value > 1000) {
      return callback(new Error('最大值1000'))
    } else {
      return callback()
    }
  },

  // 最大100
  max100(rule, value, callback) {
    let reg = /^[1-9][0-9]*$/
    if ((value !== 0) && !reg.test(value)) {
      return callback(new Error('请输入正整数值'))
    } else if (value > 100) {
      return callback(new Error('最大值100'))
    } else {
      return callback()
    }
  },

  // 最大99
  max99(rule, value, callback) {
    let reg = /^[1-9][0-9]*$/
    if (!reg.test(value)) {
      return callback(new Error('请输入正整数值'))
    } else if (value > 100) {
      return callback(new Error('最大值99'))
    } else {
      return callback()
    }
  },

  // 两位以内的小数
  twoDecimal (rule, value, callback) {
      const reg = /^\d+(\.\d{0,2})?$/
      if (reg.test(value)) {
        callback();
      } else {
        return callback(new Error('请输入两位以内的小数或整数'));
      }
  },
  // 费率校验
  feeValidate (rule, value, callback) {
      const reg = /^\d+(\.\d{0,2})?$/
      if (reg.test(value) && value < 100) {
        callback();
      } else{
        return callback(new Error('请输入两位以内的小数或整数,最大值100'));
      }
  },

  // 检测非法字符
  invalidSymbol(rule, value, callback) {
    const reg = /[^a-zA-Z0-9\_\u4e00-\u9fa5]/g
    if (reg.test(value)) {
      return callback(new Error('存在非法字符'));
    } else {
      callback();
    }
  },
  // 长度15
  length15(rule, value, callback) {
    if (value.length <= 15) {
      callback();
    } else {
      return callback(new Error('最多输入15个字'));
    }
  },
  // 长度30
  length30(rule, value, callback) {
    if (value.length <= 30) {
      callback();
    } else {
      return callback(new Error('最多输入30个字'));
    }
  },
  // 长度50
  length50(rule, value, callback) {
    if (value.length <= 50) {
      callback();
    } else {
      return callback(new Error('最多输入50个字'));
    }
  },
  // 长度150
  length150(rule, value, callback) {
    if (value.length <= 150) {
      callback();
    } else {
      return callback(new Error('最多输入150个字'));
    }
  },
  // 商品价格验证 - 六位数以内的两位以内的小数,不鉴权为空的情况
  price(rule, value, callback) {
    let reg = /^\d+(\.\d{0,2})?$/
    if (reg.test(value)) {
      if (parseFloat(value) > 999999.99) {
        return callback(new Error('请输入小于等于999999.99的数值'));
      } else {
        callback();
      }
    } else if (value.trim().length > 0) {
      return callback(new Error('请输入两位以内的小数或整数'));
    }
  },
  // 商品价格验证 - 六位数以内的两位以内的小数,不鉴权为空的情况
  price2(rule, value, callback) {
    let reg = /^\d+(\.\d{0,2})?$/
    if (reg.test(value)) {
      if (parseFloat(value) > 999999999.99) {
        return callback(new Error('请输入小于等于999999999.99的数值'));
      } else {
        callback();
      }
    } else if (value.toString().trim().length > 0) {
      return callback(new Error('请输入两位以内的小数或整数'));
    }
  },
  // 身份证号验证
  idCardNo(rule, value, callback) {
    let reg = "/(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/";
    if (new RegExp(reg).test(value) == false) {
      callback(new Error('请输入正确的身份证号码'));
    } else {
      callback();
    }
  },
  // 检测非中文
  invalidSymbolNOTEnglish(rule, value, callback) {
    const reg = /[^a-zA-Z0-9]/g
    if (reg.test(value)) {
      return callback(new Error('只能输入数字和英文字母'));
    } else {
      callback();
    }
  },
}
